<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FLAC: FLAC::Decoder::Stream Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">FLAC
   &#160;<span id="projectnumber">1.4.3</span>
   </div>
   <div id="projectbrief">Free Lossless Audio Codec</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><b>FLAC</b></li><li class="navelem"><b>Decoder</b></li><li class="navelem"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html">Stream</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-static-methods">Static Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classFLAC_1_1Decoder_1_1Stream-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">FLAC::Decoder::Stream Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="group__flacpp.html">FLAC C++ API</a> &raquo; <a class="el" href="group__flacpp__decoder.html">FLAC++/decoder.h: decoder classes</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="decoder_8h_source.html">decoder.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for FLAC::Decoder::Stream:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classFLAC_1_1Decoder_1_1Stream.png" usemap="#FLAC::Decoder::Stream_map" alt=""/>
  <map id="FLAC::Decoder::Stream_map" name="FLAC::Decoder::Stream_map">
<area href="classFLAC_1_1Decoder_1_1File.html" title="This class wraps the FLAC__StreamDecoder. If you are not decoding from a file, you may need to use FL..." alt="FLAC::Decoder::File" shape="rect" coords="0,56,145,80"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream_1_1State.html">State</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a031b66dfb0e613a83ac302e7c94c7156"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a031b66dfb0e613a83ac302e7c94c7156">is_valid</a> () const</td></tr>
<tr class="separator:a031b66dfb0e613a83ac302e7c94c7156"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a390efefcf618ca7f3bfcc1d88ecdb4a1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a390efefcf618ca7f3bfcc1d88ecdb4a1">operator bool</a> () const</td></tr>
<tr class="separator:a390efefcf618ca7f3bfcc1d88ecdb4a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa257e8156474458cd8eed2902d3c2674"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#aa257e8156474458cd8eed2902d3c2674">set_ogg_serial_number</a> (long value)</td></tr>
<tr class="separator:aa257e8156474458cd8eed2902d3c2674"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f46d34c10a65d9c48e990f9b3bbe4e2"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a8f46d34c10a65d9c48e990f9b3bbe4e2">set_md5_checking</a> (bool value)</td></tr>
<tr class="separator:a8f46d34c10a65d9c48e990f9b3bbe4e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9208dd09a48d7a3034119565f51f0c56"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a9208dd09a48d7a3034119565f51f0c56">set_metadata_respond</a> (::<a class="el" href="group__flac__format.html#gac71714ba8ddbbd66d26bb78a427fac01">FLAC__MetadataType</a> type)</td></tr>
<tr class="separator:a9208dd09a48d7a3034119565f51f0c56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95468ca8d92d1693b21203ad3e0d4545"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a95468ca8d92d1693b21203ad3e0d4545">set_metadata_respond_application</a> (const FLAC__byte id[4])</td></tr>
<tr class="separator:a95468ca8d92d1693b21203ad3e0d4545"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ecec7b37f6f1d16ddcfee83a6919b5b"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a2ecec7b37f6f1d16ddcfee83a6919b5b">set_metadata_respond_all</a> ()</td></tr>
<tr class="separator:a2ecec7b37f6f1d16ddcfee83a6919b5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae239124fe0fc8fce3dcdae904bce7544"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#ae239124fe0fc8fce3dcdae904bce7544">set_metadata_ignore</a> (::<a class="el" href="group__flac__format.html#gac71714ba8ddbbd66d26bb78a427fac01">FLAC__MetadataType</a> type)</td></tr>
<tr class="separator:ae239124fe0fc8fce3dcdae904bce7544"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac963b9eaf8271fc47ef799901b6d3650"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#ac963b9eaf8271fc47ef799901b6d3650">set_metadata_ignore_application</a> (const FLAC__byte id[4])</td></tr>
<tr class="separator:ac963b9eaf8271fc47ef799901b6d3650"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a900ecb31410c4ce56f23477b22c1c799"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a900ecb31410c4ce56f23477b22c1c799">set_metadata_ignore_all</a> ()</td></tr>
<tr class="separator:a900ecb31410c4ce56f23477b22c1c799"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9b2544cf4e3b6e045ce3a6341d5a62c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classFLAC_1_1Decoder_1_1Stream_1_1State.html">State</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#ab9b2544cf4e3b6e045ce3a6341d5a62c">get_state</a> () const</td></tr>
<tr class="separator:ab9b2544cf4e3b6e045ce3a6341d5a62c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4264fbd1585cbeb1a28b81c2b09323b6"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a4264fbd1585cbeb1a28b81c2b09323b6">get_md5_checking</a> () const</td></tr>
<tr class="separator:a4264fbd1585cbeb1a28b81c2b09323b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac767e144749a6b7f4bb6fa0ab7959114"><td class="memItemLeft" align="right" valign="top">virtual FLAC__uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#ac767e144749a6b7f4bb6fa0ab7959114">get_total_samples</a> () const</td></tr>
<tr class="separator:ac767e144749a6b7f4bb6fa0ab7959114"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a599a8cc8fa2522f5886977f616d144d7"><td class="memItemLeft" align="right" valign="top">virtual uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a599a8cc8fa2522f5886977f616d144d7">get_channels</a> () const</td></tr>
<tr class="separator:a599a8cc8fa2522f5886977f616d144d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7810225c9440e0bceb4e9c5e8d728be1"><td class="memItemLeft" align="right" valign="top">virtual ::<a class="el" href="group__flac__format.html#ga79855f8525672e37f299bbe02952ef9c">FLAC__ChannelAssignment</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a7810225c9440e0bceb4e9c5e8d728be1">get_channel_assignment</a> () const</td></tr>
<tr class="separator:a7810225c9440e0bceb4e9c5e8d728be1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55fa74c9d7a7daf444c43adf624b7a3b"><td class="memItemLeft" align="right" valign="top">virtual uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a55fa74c9d7a7daf444c43adf624b7a3b">get_bits_per_sample</a> () const</td></tr>
<tr class="separator:a55fa74c9d7a7daf444c43adf624b7a3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1413d69a409dc80a5774a061915393eb"><td class="memItemLeft" align="right" valign="top">virtual uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a1413d69a409dc80a5774a061915393eb">get_sample_rate</a> () const</td></tr>
<tr class="separator:a1413d69a409dc80a5774a061915393eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f0b833696a9e12c0914f20350af5006"><td class="memItemLeft" align="right" valign="top">virtual uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a6f0b833696a9e12c0914f20350af5006">get_blocksize</a> () const</td></tr>
<tr class="separator:a6f0b833696a9e12c0914f20350af5006"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36100b072893e211331099e06084cfab"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a36100b072893e211331099e06084cfab">get_decode_position</a> (FLAC__uint64 *position) const</td></tr>
<tr class="separator:a36100b072893e211331099e06084cfab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33169215b21ff3582c0c1f5fef6dda47"><td class="memItemLeft" align="right" valign="top">virtual ::<a class="el" href="group__flac__stream__decoder.html#gaaed54a24ac6310d29c5cafba79759c44">FLAC__StreamDecoderInitStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a33169215b21ff3582c0c1f5fef6dda47">init</a> ()</td></tr>
<tr class="separator:a33169215b21ff3582c0c1f5fef6dda47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb52518fda2e3e544f4c8807f4227ba7"><td class="memItemLeft" align="right" valign="top">virtual ::<a class="el" href="group__flac__stream__decoder.html#gaaed54a24ac6310d29c5cafba79759c44">FLAC__StreamDecoderInitStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#adb52518fda2e3e544f4c8807f4227ba7">init_ogg</a> ()</td></tr>
<tr class="separator:adb52518fda2e3e544f4c8807f4227ba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0221e9ba254566331e8d0e33579ee3c0"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a0221e9ba254566331e8d0e33579ee3c0">finish</a> ()</td></tr>
<tr class="separator:a0221e9ba254566331e8d0e33579ee3c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cb00ff4543d411a9b3c64b1f3f058bb"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a9cb00ff4543d411a9b3c64b1f3f058bb">flush</a> ()</td></tr>
<tr class="separator:a9cb00ff4543d411a9b3c64b1f3f058bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b6b4665e139234fa80acd0a1f16ca7c"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a7b6b4665e139234fa80acd0a1f16ca7c">reset</a> ()</td></tr>
<tr class="separator:a7b6b4665e139234fa80acd0a1f16ca7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab50ff5df74c47f4e0f1c91d63a59f5ac"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#ab50ff5df74c47f4e0f1c91d63a59f5ac">process_single</a> ()</td></tr>
<tr class="separator:ab50ff5df74c47f4e0f1c91d63a59f5ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0cabe42278b18e9d3dbfee39cc720cf"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#ab0cabe42278b18e9d3dbfee39cc720cf">process_until_end_of_metadata</a> ()</td></tr>
<tr class="separator:ab0cabe42278b18e9d3dbfee39cc720cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbd6ff20477cae1ace00b8c304a4795a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#afbd6ff20477cae1ace00b8c304a4795a">process_until_end_of_stream</a> ()</td></tr>
<tr class="separator:afbd6ff20477cae1ace00b8c304a4795a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30a738e7ae11f389c58a74f7ff647fe4"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a30a738e7ae11f389c58a74f7ff647fe4">skip_single_frame</a> ()</td></tr>
<tr class="separator:a30a738e7ae11f389c58a74f7ff647fe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac146128003d4ccd46bcffa82003e545c"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#ac146128003d4ccd46bcffa82003e545c">seek_absolute</a> (FLAC__uint64 sample)</td></tr>
<tr class="separator:ac146128003d4ccd46bcffa82003e545c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:af91735b6c715ca648493e837f513ef3d"><td class="memItemLeft" align="right" valign="top">virtual ::<a class="el" href="group__flac__stream__decoder.html#gad793ead451206c64a91dc0b851027b93">FLAC__StreamDecoderReadStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#af91735b6c715ca648493e837f513ef3d">read_callback</a> (FLAC__byte buffer[], size_t *bytes)=0</td></tr>
<tr class="separator:af91735b6c715ca648493e837f513ef3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6f7e0811f34837752fbe20f3348f895"><td class="memItemLeft" align="right" valign="top">virtual ::<a class="el" href="group__flac__stream__decoder.html#gac8d269e3c7af1a5889d3bd38409ed67d">FLAC__StreamDecoderSeekStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#af6f7e0811f34837752fbe20f3348f895">seek_callback</a> (FLAC__uint64 absolute_byte_offset)</td></tr>
<tr class="separator:af6f7e0811f34837752fbe20f3348f895"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0075cb08ab7bf5230ec0360ae3065a50"><td class="memItemLeft" align="right" valign="top">virtual ::<a class="el" href="group__flac__stream__decoder.html#ga83708207969383bd7b5c1e9148528845">FLAC__StreamDecoderTellStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a0075cb08ab7bf5230ec0360ae3065a50">tell_callback</a> (FLAC__uint64 *absolute_byte_offset)</td></tr>
<tr class="separator:a0075cb08ab7bf5230ec0360ae3065a50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a9af9305783c4af4b93698293dcdf84"><td class="memItemLeft" align="right" valign="top">virtual ::<a class="el" href="group__flac__stream__decoder.html#gad5860157c2bb34501b8b9370472d727a">FLAC__StreamDecoderLengthStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a6a9af9305783c4af4b93698293dcdf84">length_callback</a> (FLAC__uint64 *stream_length)</td></tr>
<tr class="separator:a6a9af9305783c4af4b93698293dcdf84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac06aa682efc2e819624e78a3e6b4bd7b"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#ac06aa682efc2e819624e78a3e6b4bd7b">eof_callback</a> ()</td></tr>
<tr class="separator:ac06aa682efc2e819624e78a3e6b4bd7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5a61e9ff720cca3eb38d1f2790f00fb"><td class="memItemLeft" align="right" valign="top">virtual ::<a class="el" href="group__flac__stream__decoder.html#ga73f67eb9e0ab57945afe038751bc62c8">FLAC__StreamDecoderWriteStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#af5a61e9ff720cca3eb38d1f2790f00fb">write_callback</a> (const ::<a class="el" href="structFLAC____Frame.html">FLAC__Frame</a> *frame, const FLAC__int32 *const buffer[])=0</td></tr>
<tr class="separator:af5a61e9ff720cca3eb38d1f2790f00fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20d0873073d9542e08fb48becaa607c9"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a20d0873073d9542e08fb48becaa607c9">metadata_callback</a> (const ::<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *metadata)</td></tr>
<tr class="separator:a20d0873073d9542e08fb48becaa607c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0dbadd163ade7bc2d1858e7a435d5e52"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a0dbadd163ade7bc2d1858e7a435d5e52">error_callback</a> (::<a class="el" href="group__flac__stream__decoder.html#ga130e70bd9a73d3c2416247a3e5132ecf">FLAC__StreamDecoderErrorStatus</a> status)=0</td></tr>
<tr class="separator:a0dbadd163ade7bc2d1858e7a435d5e52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
Static Protected Member Functions</h2></td></tr>
<tr class="memitem:a2efd2366443b85a3f7819ec02d0f6b8d"><td class="memItemLeft" align="right" valign="top"><a id="a2efd2366443b85a3f7819ec02d0f6b8d"></a>
::<a class="el" href="group__flac__stream__decoder.html#gad793ead451206c64a91dc0b851027b93">FLAC__StreamDecoderReadStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><b>read_callback_</b> (const ::<a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)</td></tr>
<tr class="separator:a2efd2366443b85a3f7819ec02d0f6b8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c6be80e32f46f7f51d2815f39574c28"><td class="memItemLeft" align="right" valign="top"><a id="a6c6be80e32f46f7f51d2815f39574c28"></a>
::<a class="el" href="group__flac__stream__decoder.html#gac8d269e3c7af1a5889d3bd38409ed67d">FLAC__StreamDecoderSeekStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><b>seek_callback_</b> (const ::<a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)</td></tr>
<tr class="separator:a6c6be80e32f46f7f51d2815f39574c28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7f83bf10e2bdcba2427b7632ce98a0c"><td class="memItemLeft" align="right" valign="top"><a id="ae7f83bf10e2bdcba2427b7632ce98a0c"></a>
::<a class="el" href="group__flac__stream__decoder.html#ga83708207969383bd7b5c1e9148528845">FLAC__StreamDecoderTellStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><b>tell_callback_</b> (const ::<a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)</td></tr>
<tr class="separator:ae7f83bf10e2bdcba2427b7632ce98a0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8326b0bca2881b7b92b361d3c40c525"><td class="memItemLeft" align="right" valign="top"><a id="af8326b0bca2881b7b92b361d3c40c525"></a>
::<a class="el" href="group__flac__stream__decoder.html#gad5860157c2bb34501b8b9370472d727a">FLAC__StreamDecoderLengthStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><b>length_callback_</b> (const ::<a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, FLAC__uint64 *stream_length, void *client_data)</td></tr>
<tr class="separator:af8326b0bca2881b7b92b361d3c40c525"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac499032d71270646efb116f155becbd9"><td class="memItemLeft" align="right" valign="top"><a id="ac499032d71270646efb116f155becbd9"></a>
static FLAC__bool&#160;</td><td class="memItemRight" valign="bottom"><b>eof_callback_</b> (const ::<a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, void *client_data)</td></tr>
<tr class="separator:ac499032d71270646efb116f155becbd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94854ddb2f0ebf2d4f217bb0cb34a379"><td class="memItemLeft" align="right" valign="top"><a id="a94854ddb2f0ebf2d4f217bb0cb34a379"></a>
::<a class="el" href="group__flac__stream__decoder.html#ga73f67eb9e0ab57945afe038751bc62c8">FLAC__StreamDecoderWriteStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><b>write_callback_</b> (const ::<a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, const ::<a class="el" href="structFLAC____Frame.html">FLAC__Frame</a> *frame, const FLAC__int32 *const buffer[], void *client_data)</td></tr>
<tr class="separator:a94854ddb2f0ebf2d4f217bb0cb34a379"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a616dd32dc9bcc7f81d181747efc17a2f"><td class="memItemLeft" align="right" valign="top"><a id="a616dd32dc9bcc7f81d181747efc17a2f"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>metadata_callback_</b> (const ::<a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, const ::<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *metadata, void *client_data)</td></tr>
<tr class="separator:a616dd32dc9bcc7f81d181747efc17a2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea8455636345e84068d31fbbf1fc1cce"><td class="memItemLeft" align="right" valign="top"><a id="aea8455636345e84068d31fbbf1fc1cce"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>error_callback_</b> (const ::<a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *decoder, ::<a class="el" href="group__flac__stream__decoder.html#ga130e70bd9a73d3c2416247a3e5132ecf">FLAC__StreamDecoderErrorStatus</a> status, void *client_data)</td></tr>
<tr class="separator:aea8455636345e84068d31fbbf1fc1cce"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a61f72b653d6171edaf5e7cdf916b98aa"><td class="memItemLeft" align="right" valign="top"><a id="a61f72b653d6171edaf5e7cdf916b98aa"></a>
::<a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>decoder_</b></td></tr>
<tr class="separator:a61f72b653d6171edaf5e7cdf916b98aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This class wraps the <a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a>. If you are decoding from a file, <a class="el" href="classFLAC_1_1Decoder_1_1File.html" title="This class wraps the FLAC__StreamDecoder. If you are not decoding from a file, you may need to use FL...">FLAC::Decoder::File</a> may be more convenient. </p>
<p>The usage of this class is similar to <a class="el" href="structFLAC____StreamDecoder.html">FLAC__StreamDecoder</a>, except instead of providing callbacks to FLAC__stream_decoder_init*_stream(), you will inherit from this class and override the virtual callback functions with your own implementations, then call <a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a33169215b21ff3582c0c1f5fef6dda47" title="Seek FLAC__stream_decoder_init_stream()">init()</a> or <a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#adb52518fda2e3e544f4c8807f4227ba7" title="Seek FLAC__stream_decoder_init_ogg_stream()">init_ogg()</a>. The rest of the calls work the same as in the C layer.</p>
<p>Only the read, write, and error callbacks are mandatory. The others are optional; this class provides default implementations that do nothing. In order for seeking to work you must override <a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#af6f7e0811f34837752fbe20f3348f895" title="see FLAC__StreamDecoderSeekCallback">seek_callback()</a>, <a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a0075cb08ab7bf5230ec0360ae3065a50" title="see FLAC__StreamDecoderTellCallback">tell_callback()</a>, <a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a6a9af9305783c4af4b93698293dcdf84" title="see FLAC__StreamDecoderLengthCallback">length_callback()</a>, and <a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#ac06aa682efc2e819624e78a3e6b4bd7b" title="see FLAC__StreamDecoderEofCallback">eof_callback()</a>. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a031b66dfb0e613a83ac302e7c94c7156"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a031b66dfb0e613a83ac302e7c94c7156">&#9670;&nbsp;</a></span>is_valid()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::is_valid </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Call after construction to check that the object was created successfully. If not, use <a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#ab9b2544cf4e3b6e045ce3a6341d5a62c" title="See FLAC__stream_decoder_get_state()">get_state()</a> to find out why not. </p>

</div>
</div>
<a id="a390efefcf618ca7f3bfcc1d88ecdb4a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a390efefcf618ca7f3bfcc1d88ecdb4a1">&#9670;&nbsp;</a></span>operator bool()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">FLAC::Decoder::Stream::operator bool </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="classFLAC_1_1Decoder_1_1Stream.html#a031b66dfb0e613a83ac302e7c94c7156">is_valid()</a> </p>

</div>
</div>
<a id="aa257e8156474458cd8eed2902d3c2674"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa257e8156474458cd8eed2902d3c2674">&#9670;&nbsp;</a></span>set_ogg_serial_number()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::set_ogg_serial_number </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga7fd232e7a2b5070bd26450487edbc2a1">FLAC__stream_decoder_set_ogg_serial_number()</a> </p>

</div>
</div>
<a id="a8f46d34c10a65d9c48e990f9b3bbe4e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f46d34c10a65d9c48e990f9b3bbe4e2">&#9670;&nbsp;</a></span>set_md5_checking()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::set_md5_checking </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga8f402243eed54f400ddd2f296ff54497">FLAC__stream_decoder_set_md5_checking()</a> </p>

</div>
</div>
<a id="a9208dd09a48d7a3034119565f51f0c56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9208dd09a48d7a3034119565f51f0c56">&#9670;&nbsp;</a></span>set_metadata_respond()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::set_metadata_respond </td>
          <td>(</td>
          <td class="paramtype">::<a class="el" href="group__flac__format.html#gac71714ba8ddbbd66d26bb78a427fac01">FLAC__MetadataType</a>&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gad4e685f3d055f70fbaed9ffa4f70f74b">FLAC__stream_decoder_set_metadata_respond()</a> </p>

</div>
</div>
<a id="a95468ca8d92d1693b21203ad3e0d4545"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95468ca8d92d1693b21203ad3e0d4545">&#9670;&nbsp;</a></span>set_metadata_respond_application()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::set_metadata_respond_application </td>
          <td>(</td>
          <td class="paramtype">const FLAC__byte&#160;</td>
          <td class="paramname"><em>id</em>[4]</td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gaee1196ff5fa97df9810f708dc2bc8326">FLAC__stream_decoder_set_metadata_respond_application()</a> </p>

</div>
</div>
<a id="a2ecec7b37f6f1d16ddcfee83a6919b5b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ecec7b37f6f1d16ddcfee83a6919b5b">&#9670;&nbsp;</a></span>set_metadata_respond_all()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::set_metadata_respond_all </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga1ce03d8f305a818ff9a573473af99dc4">FLAC__stream_decoder_set_metadata_respond_all()</a> </p>

</div>
</div>
<a id="ae239124fe0fc8fce3dcdae904bce7544"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae239124fe0fc8fce3dcdae904bce7544">&#9670;&nbsp;</a></span>set_metadata_ignore()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::set_metadata_ignore </td>
          <td>(</td>
          <td class="paramtype">::<a class="el" href="group__flac__format.html#gac71714ba8ddbbd66d26bb78a427fac01">FLAC__MetadataType</a>&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gad75f067720da89c4e9d96dedc45f73e6">FLAC__stream_decoder_set_metadata_ignore()</a> </p>

</div>
</div>
<a id="ac963b9eaf8271fc47ef799901b6d3650"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac963b9eaf8271fc47ef799901b6d3650">&#9670;&nbsp;</a></span>set_metadata_ignore_application()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::set_metadata_ignore_application </td>
          <td>(</td>
          <td class="paramtype">const FLAC__byte&#160;</td>
          <td class="paramname"><em>id</em>[4]</td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gaab41e8bc505b24df4912de53de06b085">FLAC__stream_decoder_set_metadata_ignore_application()</a> </p>

</div>
</div>
<a id="a900ecb31410c4ce56f23477b22c1c799"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a900ecb31410c4ce56f23477b22c1c799">&#9670;&nbsp;</a></span>set_metadata_ignore_all()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::set_metadata_ignore_all </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gaa1307f07fae5d7a4a0c18beeae7ec5e6">FLAC__stream_decoder_set_metadata_ignore_all()</a> </p>

</div>
</div>
<a id="ab9b2544cf4e3b6e045ce3a6341d5a62c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9b2544cf4e3b6e045ce3a6341d5a62c">&#9670;&nbsp;</a></span>get_state()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classFLAC_1_1Decoder_1_1Stream_1_1State.html">State</a> FLAC::Decoder::Stream::get_state </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gaf99dac2d9255f7db4df8a6d9974a9a9a">FLAC__stream_decoder_get_state()</a> </p>

</div>
</div>
<a id="a4264fbd1585cbeb1a28b81c2b09323b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4264fbd1585cbeb1a28b81c2b09323b6">&#9670;&nbsp;</a></span>get_md5_checking()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::get_md5_checking </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gae27a6b30b55beda03559c12a5df21537">FLAC__stream_decoder_get_md5_checking()</a> </p>

</div>
</div>
<a id="ac767e144749a6b7f4bb6fa0ab7959114"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac767e144749a6b7f4bb6fa0ab7959114">&#9670;&nbsp;</a></span>get_total_samples()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual FLAC__uint64 FLAC::Decoder::Stream::get_total_samples </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga930d9b591fcfaea74359c722cdfb980c">FLAC__stream_decoder_get_total_samples()</a> </p>

</div>
</div>
<a id="a599a8cc8fa2522f5886977f616d144d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a599a8cc8fa2522f5886977f616d144d7">&#9670;&nbsp;</a></span>get_channels()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual uint32_t FLAC::Decoder::Stream::get_channels </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga802d5f4c48a711b690d6d66d2e3f20a5">FLAC__stream_decoder_get_channels()</a> </p>

</div>
</div>
<a id="a7810225c9440e0bceb4e9c5e8d728be1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7810225c9440e0bceb4e9c5e8d728be1">&#9670;&nbsp;</a></span>get_channel_assignment()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual ::<a class="el" href="group__flac__format.html#ga79855f8525672e37f299bbe02952ef9c">FLAC__ChannelAssignment</a> FLAC::Decoder::Stream::get_channel_assignment </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gae62fdf93c1fedd5fea9258ecdc78bb53">FLAC__stream_decoder_get_channel_assignment()</a> </p>

</div>
</div>
<a id="a55fa74c9d7a7daf444c43adf624b7a3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55fa74c9d7a7daf444c43adf624b7a3b">&#9670;&nbsp;</a></span>get_bits_per_sample()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual uint32_t FLAC::Decoder::Stream::get_bits_per_sample </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga689893cde90c171ca343192e92679842">FLAC__stream_decoder_get_bits_per_sample()</a> </p>

</div>
</div>
<a id="a1413d69a409dc80a5774a061915393eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1413d69a409dc80a5774a061915393eb">&#9670;&nbsp;</a></span>get_sample_rate()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual uint32_t FLAC::Decoder::Stream::get_sample_rate </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga95f7cdfefba169d964e3c08672a0f0ad">FLAC__stream_decoder_get_sample_rate()</a> </p>

</div>
</div>
<a id="a6f0b833696a9e12c0914f20350af5006"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f0b833696a9e12c0914f20350af5006">&#9670;&nbsp;</a></span>get_blocksize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual uint32_t FLAC::Decoder::Stream::get_blocksize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gafe07ad9949cc54944fd369fe9335c4bc">FLAC__stream_decoder_get_blocksize()</a> </p>

</div>
</div>
<a id="a36100b072893e211331099e06084cfab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36100b072893e211331099e06084cfab">&#9670;&nbsp;</a></span>get_decode_position()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::get_decode_position </td>
          <td>(</td>
          <td class="paramtype">FLAC__uint64 *&#160;</td>
          <td class="paramname"><em>position</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gaffd9b0d0832ed01e6d75930b5391def5">FLAC__stream_decoder_get_decode_position()</a> </p>

</div>
</div>
<a id="a33169215b21ff3582c0c1f5fef6dda47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33169215b21ff3582c0c1f5fef6dda47">&#9670;&nbsp;</a></span>init()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual ::<a class="el" href="group__flac__stream__decoder.html#gaaed54a24ac6310d29c5cafba79759c44">FLAC__StreamDecoderInitStatus</a> FLAC::Decoder::Stream::init </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Seek <a class="el" href="group__flac__stream__decoder.html#ga150d381abc5249168e439bc076544b29">FLAC__stream_decoder_init_stream()</a> </p>

</div>
</div>
<a id="adb52518fda2e3e544f4c8807f4227ba7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb52518fda2e3e544f4c8807f4227ba7">&#9670;&nbsp;</a></span>init_ogg()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual ::<a class="el" href="group__flac__stream__decoder.html#gaaed54a24ac6310d29c5cafba79759c44">FLAC__StreamDecoderInitStatus</a> FLAC::Decoder::Stream::init_ogg </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Seek <a class="el" href="group__flac__stream__decoder.html#ga1b043adeb805c779c1e97cb68959d1ab">FLAC__stream_decoder_init_ogg_stream()</a> </p>

</div>
</div>
<a id="a0221e9ba254566331e8d0e33579ee3c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0221e9ba254566331e8d0e33579ee3c0">&#9670;&nbsp;</a></span>finish()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::finish </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga96c47c96920f363cd0972b54067818a9">FLAC__stream_decoder_finish()</a> </p>

</div>
</div>
<a id="a9cb00ff4543d411a9b3c64b1f3f058bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cb00ff4543d411a9b3c64b1f3f058bb">&#9670;&nbsp;</a></span>flush()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::flush </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga95570a455e582b2ab46ab9bb529f26ac">FLAC__stream_decoder_flush()</a> </p>

</div>
</div>
<a id="a7b6b4665e139234fa80acd0a1f16ca7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b6b4665e139234fa80acd0a1f16ca7c">&#9670;&nbsp;</a></span>reset()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::reset </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#gaa4183c2d925d5a5edddde9d1ca145725">FLAC__stream_decoder_reset()</a> </p>

</div>
</div>
<a id="ab50ff5df74c47f4e0f1c91d63a59f5ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab50ff5df74c47f4e0f1c91d63a59f5ac">&#9670;&nbsp;</a></span>process_single()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::process_single </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga9d6df4a39892c05955122cf7f987f856">FLAC__stream_decoder_process_single()</a> </p>

</div>
</div>
<a id="ab0cabe42278b18e9d3dbfee39cc720cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0cabe42278b18e9d3dbfee39cc720cf">&#9670;&nbsp;</a></span>process_until_end_of_metadata()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::process_until_end_of_metadata </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga027ffb5b75dc39b3d26f55c5e6b42682">FLAC__stream_decoder_process_until_end_of_metadata()</a> </p>

</div>
</div>
<a id="afbd6ff20477cae1ace00b8c304a4795a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbd6ff20477cae1ace00b8c304a4795a">&#9670;&nbsp;</a></span>process_until_end_of_stream()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::process_until_end_of_stream </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga89a0723812fa6ef7cdb173715f1bc81f">FLAC__stream_decoder_process_until_end_of_stream()</a> </p>

</div>
</div>
<a id="a30a738e7ae11f389c58a74f7ff647fe4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30a738e7ae11f389c58a74f7ff647fe4">&#9670;&nbsp;</a></span>skip_single_frame()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::skip_single_frame </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga85b666aba976f29e8dd9d7956fce4301">FLAC__stream_decoder_skip_single_frame()</a> </p>

</div>
</div>
<a id="ac146128003d4ccd46bcffa82003e545c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac146128003d4ccd46bcffa82003e545c">&#9670;&nbsp;</a></span>seek_absolute()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::seek_absolute </td>
          <td>(</td>
          <td class="paramtype">FLAC__uint64&#160;</td>
          <td class="paramname"><em>sample</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>See <a class="el" href="group__flac__stream__decoder.html#ga6a2eb6072b9fafefc3f80f1959805ccb">FLAC__stream_decoder_seek_absolute()</a> </p>

</div>
</div>
<a id="af91735b6c715ca648493e837f513ef3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af91735b6c715ca648493e837f513ef3d">&#9670;&nbsp;</a></span>read_callback()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual ::<a class="el" href="group__flac__stream__decoder.html#gad793ead451206c64a91dc0b851027b93">FLAC__StreamDecoderReadStatus</a> FLAC::Decoder::Stream::read_callback </td>
          <td>(</td>
          <td class="paramtype">FLAC__byte&#160;</td>
          <td class="paramname"><em>buffer</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>bytes</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>see FLAC__StreamDecoderReadCallback </p>

<p>Implemented in <a class="el" href="classFLAC_1_1Decoder_1_1File.html#a48c900fc010f14786e98908377f41195">FLAC::Decoder::File</a>.</p>

</div>
</div>
<a id="af6f7e0811f34837752fbe20f3348f895"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6f7e0811f34837752fbe20f3348f895">&#9670;&nbsp;</a></span>seek_callback()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual ::<a class="el" href="group__flac__stream__decoder.html#gac8d269e3c7af1a5889d3bd38409ed67d">FLAC__StreamDecoderSeekStatus</a> FLAC::Decoder::Stream::seek_callback </td>
          <td>(</td>
          <td class="paramtype">FLAC__uint64&#160;</td>
          <td class="paramname"><em>absolute_byte_offset</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>see FLAC__StreamDecoderSeekCallback </p>

</div>
</div>
<a id="a0075cb08ab7bf5230ec0360ae3065a50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0075cb08ab7bf5230ec0360ae3065a50">&#9670;&nbsp;</a></span>tell_callback()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual ::<a class="el" href="group__flac__stream__decoder.html#ga83708207969383bd7b5c1e9148528845">FLAC__StreamDecoderTellStatus</a> FLAC::Decoder::Stream::tell_callback </td>
          <td>(</td>
          <td class="paramtype">FLAC__uint64 *&#160;</td>
          <td class="paramname"><em>absolute_byte_offset</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>see FLAC__StreamDecoderTellCallback </p>

</div>
</div>
<a id="a6a9af9305783c4af4b93698293dcdf84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a9af9305783c4af4b93698293dcdf84">&#9670;&nbsp;</a></span>length_callback()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual ::<a class="el" href="group__flac__stream__decoder.html#gad5860157c2bb34501b8b9370472d727a">FLAC__StreamDecoderLengthStatus</a> FLAC::Decoder::Stream::length_callback </td>
          <td>(</td>
          <td class="paramtype">FLAC__uint64 *&#160;</td>
          <td class="paramname"><em>stream_length</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>see FLAC__StreamDecoderLengthCallback </p>

</div>
</div>
<a id="ac06aa682efc2e819624e78a3e6b4bd7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac06aa682efc2e819624e78a3e6b4bd7b">&#9670;&nbsp;</a></span>eof_callback()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool FLAC::Decoder::Stream::eof_callback </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>see FLAC__StreamDecoderEofCallback </p>

</div>
</div>
<a id="af5a61e9ff720cca3eb38d1f2790f00fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5a61e9ff720cca3eb38d1f2790f00fb">&#9670;&nbsp;</a></span>write_callback()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual ::<a class="el" href="group__flac__stream__decoder.html#ga73f67eb9e0ab57945afe038751bc62c8">FLAC__StreamDecoderWriteStatus</a> FLAC::Decoder::Stream::write_callback </td>
          <td>(</td>
          <td class="paramtype">const ::<a class="el" href="structFLAC____Frame.html">FLAC__Frame</a> *&#160;</td>
          <td class="paramname"><em>frame</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const FLAC__int32 *const&#160;</td>
          <td class="paramname"><em>buffer</em>[]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>see FLAC__StreamDecoderWriteCallback </p>

</div>
</div>
<a id="a20d0873073d9542e08fb48becaa607c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20d0873073d9542e08fb48becaa607c9">&#9670;&nbsp;</a></span>metadata_callback()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void FLAC::Decoder::Stream::metadata_callback </td>
          <td>(</td>
          <td class="paramtype">const ::<a class="el" href="structFLAC____StreamMetadata.html">FLAC__StreamMetadata</a> *&#160;</td>
          <td class="paramname"><em>metadata</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>see FLAC__StreamDecoderMetadataCallback </p>

</div>
</div>
<a id="a0dbadd163ade7bc2d1858e7a435d5e52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0dbadd163ade7bc2d1858e7a435d5e52">&#9670;&nbsp;</a></span>error_callback()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void FLAC::Decoder::Stream::error_callback </td>
          <td>(</td>
          <td class="paramtype">::<a class="el" href="group__flac__stream__decoder.html#ga130e70bd9a73d3c2416247a3e5132ecf">FLAC__StreamDecoderErrorStatus</a>&#160;</td>
          <td class="paramname"><em>status</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>see FLAC__StreamDecoderErrorCallback </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/FLAC++/<a class="el" href="decoder_8h_source.html">decoder.h</a></li>
</ul>
</div><!-- contents -->

<hr size="1"/>
Copyright (c) 2000-2009  Josh Coalson
Copyright (c) 2011-2023  Xiph.Org Foundation
<!-- Copyright (c) 2000-2009  Josh Coalson -->
<!-- Copyright (c) 2011-2023  Xiph.Org Foundation -->
<!-- Permission is granted to copy, distribute and/or modify this document -->
<!-- under the terms of the GNU Free Documentation License, Version 1.1 -->
<!-- or any later version published by the Free Software Foundation; -->
<!-- with no invariant sections. -->
<!-- A copy of the license can be found at http://www.gnu.org/copyleft/fdl.html -->
</body>
</html>
